home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 October: Mac OS SDK / Dev.CD Oct 00 SDK1.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / RIncludes / Balloons.r < prev    next >
Encoding:
Text File  |  2000-04-12  |  25.7 KB  |  598 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        Balloons.r
  3.  
  4.      Contains:    Balloon Help Package Interfaces.
  5.  
  6.      Version:    Technology:    System 7.0
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    © 1990-1993, 1995-1999 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17.  
  18. #ifndef __BALLOONS_R__
  19. #define __BALLOONS_R__
  20.  
  21. #ifndef __CONDITIONALMACROS_R__
  22. #include "ConditionalMacros.r"
  23. #endif
  24.  
  25. #ifndef __MACHELP__
  26. #define hmBalloonHelpVersion             0x0002                /*  The real version of the Help Manager  */
  27. #endif
  28. #define kHMHelpMenuID                     (-16490)            /*  Resource ID and menu ID of help menu  */
  29. #define kHMAboutHelpItem                 1                    /*  help menu item number of About Balloon Help…  */
  30. #define kHMShowBalloonsItem             3                    /*  help menu item number of Show/Hide Balloons  */
  31.  
  32. #define kHMHelpID                         (-5696)                /*  ID of various Help Mgr package resources (in Pack14 range)  */
  33. #define kBalloonWDEFID                     126                    /*  Resource ID of the WDEF proc used in standard balloons  */
  34.  
  35.                                                             /*  Options for Help Manager resources in 'hmnu', 'hdlg', 'hrct', 'hovr', & 'hfdr' resources  */
  36. #define hmDefaultOptions                 0                    /*  default options for help manager resources  */
  37. #define hmUseSubID                         1                    /*  treat resID's in resources as subID's of driver base ID (for Desk Accessories)  */
  38. #define hmAbsoluteCoords                 2                    /*  ignore window port origin and treat rectangles as absolute coords (local to window)  */
  39.  
  40. #define hmSaveBitsNoWindow                 4                    /*  don't create a window, just blast bits on screen. No update event is generated  */
  41. #define hmSaveBitsWindow                 8                    /*  create a window, but restore bits behind window when window goes away & generate update event  */
  42. #define hmMatchInTitle                     16                    /*  for hwin resources, match string anywhere in window title string  */
  43.  
  44.  
  45. #define HelpMgrVersion            2            /* version of Help Manager */
  46.  
  47. /* Generic defines for the switch items used in 'hrct', 'hmnu', & 'hdlg's    */
  48. #define    HMStringItemID            1            /* pstring is used in help message */
  49. #define    HMPictItemID            2            /* 'PICT' resource ID is used in help message */
  50. #define    HMStringResItemID        3            /* 'STR#' resource ID and index is used in help message */
  51. #define HMTEResItemID            6            /* Styled Text Edit resources are used in help message */
  52. #define HMSTRResItemID            7            /* 'STR ' resource ID is used in help message */
  53. #define HMSkipItemID            256            /* don't display a balloon */
  54. #define HMCompareItemID            512            /* for hmnu resources, compare menu item to string and use help msg if match */
  55. #define HMNamedResourceID        1024        /* for hmnu resources, use menu item as call to GetNamedResource() to fetch resource */
  56. #define HMTrackCntlID            2048        /* not yet implemented, reserved */
  57.  
  58. /*----------------------------hmnu • Help Mgr Menu Balloon Template----------------------------*/
  59.  
  60. type 'hmnu' {
  61.         integer;                                    /* Help Version */
  62.         longint;                                    /* Options */
  63.         integer;                                    /* Balloon ProcID */
  64.         integer;                                     /* Balloon variant */
  65.         integer = $$CountOf(HMenuArray);            /* Count of menu items (below) */
  66.  
  67.         switch {            /* Special Message for missing array items */
  68.                 case HMStringItem:
  69. hmnuMissStringBeg:        integer = (hmnuMissStringEnd - hmnuMissStringBeg) / 8;
  70.                         key int = HMStringItemID;
  71.                         pstring;            /* missing HMenuArray items (Enabled)  */
  72.                         pstring;            /* missing HMenuArray items (Disabled)  */
  73.                         pstring;            /* missing HMenuArray items (checked) */
  74.                         pstring;            /* missing HMenuArray items (other)  */
  75.                         align word;            /* always word align the code for the pstring */
  76. hmnuMissStringEnd:                        
  77.                 case HMPictItem:
  78. hmnuMissPictBeg:        integer = (hmnuMissPictEnd - hmnuMissPictBeg) / 8;
  79.                         key int = HMPictItemID;
  80.                         integer;            /* use for missing HMenuArray items  */
  81.                         integer;            /* use for missing HMenuArray items  */
  82.                         integer;            /* use for missing HMenuArray items  */
  83.                         integer;            /* use for missing HMenuArray items  */
  84. hmnuMissPictEnd:
  85.                 case HMStringResItem:
  86. hmnuMissStringResBeg:    integer = (hmnuMissStringResEnd - hmnuMissStringResBeg) / 8;
  87.                         key int = HMStringResItemID;
  88.                         integer; integer;    /* Miss or 0 HMenuArray STR# res ID, index # */
  89.                         integer; integer;    /* Miss or 0 HMenuArray STR# res ID, index # */
  90.                         integer; integer;    /* Miss or 0 HMenuArray STR# res ID, index # */
  91.                         integer; integer;    /* Miss or 0 HMenuArray STR# res ID, index # */
  92. hmnuMissStringResEnd:
  93.                 case HMTEResItem:
  94. hmnuMissTEResBeg:        integer = (hmnuMissTEResEnd - hmnuMissTEResBeg) / 8;
  95.                         key int = HMTEResItemID;
  96.                         integer;            /* use for missing HMenuArray items */
  97.                         integer;            /* use for missing HMenuArray items */
  98.                         integer;            /* use for missing HMenuArray items */
  99.                         integer;            /* use for missing HMenuArray items */
  100. hmnuMissTEResEnd:
  101.                 case HMSTRResItem:
  102. hmnuMissSTRResBeg:        integer = (hmnuMissSTRResEnd - hmnuMissSTRResBeg) / 8;
  103.                         key int = HMSTRResItemID;
  104.                         integer;            /* use for missing HMenuArray items */
  105.                         integer;            /* use for missing HMenuArray items */
  106.                         integer;            /* use for missing HMenuArray items */
  107.                         integer;            /* use for missing HMenuArray items */
  108. hmnuMissSTRResEnd:
  109.                 case HMSkipItem:
  110. hmnuMissSkipBeg:        integer = (hmnuMissSkipEnd - hmnuMissSkipBeg) / 8;
  111.                         key int = HMSkipItemID;    /* use when there is no missing msg */
  112. hmnuMissSkipEnd:                        
  113.             };
  114.             
  115.         array HMenuArray {
  116.                 switch {
  117.                     case HMStringItem:
  118. hmnuStringBeg:            integer = (hmnuStringEnd[$$ArrayIndex(HMenuArray)] - hmnuStringBeg[$$ArrayIndex(HMenuArray)]) / 8;
  119.                         key int = HMStringItemID;
  120.                         pstring;            /* Enabled menu message string  */
  121.                         pstring;            /* Disabled menu message string */
  122.                         pstring;            /* Checked menu message string */
  123.                         pstring;            /* other menu message string */
  124.                         align word;
  125. hmnuStringEnd:                        
  126.                     case HMPictItem:
  127. hmnuPictBeg:            integer = (hmnuPictEnd[$$ArrayIndex(HMenuArray)] - hmnuPictBeg[$$ArrayIndex(HMenuArray)]) / 8;
  128.                         key int = HMPictItemID;
  129.                         integer;            /* Enabled menu message pict ID  */
  130.                         integer;            /* Disabled menu message pict ID */
  131.                         integer;            /* Checked menu message pict ID */
  132.                         integer;            /* other menu message pict ID */        
  133. hmnuPictEnd:                                                
  134.                     case HMStringResItem:
  135. hmnuStringResBeg:        integer = (hmnuStringResEnd[$$ArrayIndex(HMenuArray)] - hmnuStringResBeg[$$ArrayIndex(HMenuArray)]) / 8;
  136.                         key int = HMStringResItemID;
  137.                         integer; integer;    /* Enabled STR# res ID, index # */
  138.                         integer; integer;    /* Disabled STR# res ID, index # */
  139.                         integer; integer;    /* Checked menu message STR# res ID, index # */
  140.                         integer; integer;    /* other menu message STR# res ID, index # */
  141. hmnuStringResEnd:                        
  142.                     case HMTEResItem:
  143. hmnuTEResBeg:            integer = (hmnuTEResEnd[$$ArrayIndex(HMenuArray)] - hmnuTEResBeg[$$ArrayIndex(HMenuArray)]) / 8;
  144.                         key int = HMTEResItemID;
  145.                         integer;            /* Enabled menu message TERes ID */
  146.                         integer;            /* Disabled menu message TERes ID */
  147.                         integer;            /* Checked message TERes ID */
  148.                         integer;            /* other menu message TERes ID */    
  149. hmnuTEResEnd:                        
  150.                     case HMSTRResItem:
  151. hmnuSTRResBeg:            integer = (hmnuSTRResEnd[$$ArrayIndex(HMenuArray)] - hmnuSTRResBeg[$$ArrayIndex(HMenuArray)]) / 8;
  152.                         key int = HMSTRResItemID;
  153.                         integer;            /* Enabled menu message STR ID */
  154.                         integer;            /* Disabled menu message STR ID */
  155.                         integer;            /* Checked message STR ID */
  156.                         integer;            /* other menu message STR ID */    
  157. hmnuSTRResEnd:                        
  158.                     case HMSkipItem:
  159. hmnuSkipBeg:            integer = (hmnuSkipEnd[$$ArrayIndex(HMenuArray)] - hmnuSkipBeg[$$ArrayIndex(HMenuArray)]) / 8;
  160.                         key int = HMSkipItemID;
  161. hmnuSkipEnd:                        
  162.                     case HMCompareItem:
  163. hmnuCompareBeg:            integer = (hmnuCompareEnd[$$ArrayIndex(HMenuArray)] - hmnuCompareBeg[$$ArrayIndex(HMenuArray)]) / 8;
  164.                         key int = HMCompareItemID;
  165.                         pstring;            /* if itemstr matches, use this item, else goto next item */
  166.                         align word;
  167.                         
  168.                         switch {                    /* case the message type */
  169.                     
  170.                             case HMStringItem:
  171.                                 key int = HMStringItemID;
  172.                                 pstring;            /* Enabled menu message string  */
  173.                                 pstring;            /* Disabled menu message string */
  174.                                 pstring;            /* Checked menu message string */
  175.                                 pstring;            /* other menu message string */
  176.                                 align word;
  177.  
  178.                             case HMPictItem:
  179.                                 key int = HMPictItemID;
  180.                                 integer;            /* Enabled menu message pict ID  */
  181.                                 integer;            /* Disabled menu message pict ID */
  182.                                 integer;            /* Checked menu message pict */
  183.                                 integer;            /* other menu message pict */        
  184.  
  185.                             case HMStringResItem:
  186.                                 key int = HMStringResItemID;
  187.                                 integer; integer;    /* Enabled STR# res ID, index # */
  188.                                 integer; integer;    /* Disabled STR# res ID, index # */
  189.                                 integer; integer;    /* Checked menu message STR# res ID, index # */
  190.                                 integer; integer;    /* other menu message STR# res ID, index # */
  191.  
  192.                             case HMTEResItem:
  193.                                 key int = HMTEResItemID;
  194.                                 integer;            /* Enabled menu message TERes ID */
  195.                                 integer;            /* Disabled menu message TERes ID */
  196.                                 integer;            /* Checked menu message TERes ID */
  197.                                 integer;            /* other menu message TERes ID */    
  198.  
  199.                             case HMSTRResItem:
  200.                                 key int = HMSTRResItemID;
  201.                                 integer;            /* Enabled menu message STR ID */
  202.                                 integer;            /* Disabled menu message STR ID */
  203.                                 integer;            /* Checked menu message STR ID */
  204.                                 integer;            /* other menu message STR ID */    
  205.  
  206.                             case HMSkipItem:
  207.                                 key int = HMSkipItemID;
  208.                         };
  209. hmnuCompareEnd:                
  210.                     case HMNamedResourceItem:
  211. hmnuNamedResBeg:        integer = (hmnuNamedResEnd[$$ArrayIndex(HMenuArray)] - hmnuNamedResBeg[$$ArrayIndex(HMenuArray)]) / 8;
  212.                         key int = HMNamedResourceID;
  213.                         literal longint;    /*    res type of resource to fetch, using item name    */
  214. hmnuNamedResEnd:                        
  215.                 };
  216.         };
  217. };
  218.  
  219. /*----------------------------hdlg • Help Mgr Dialog Balloon Template--------------------------*/
  220. type 'hdlg' {
  221.         integer;                                    /* Help Version */
  222.         integer;                                    /* item # (0-based) of first DITL item */
  223.         longint;                                    /* Options    */
  224.         integer;                                    /* Balloon ProcID */
  225.         integer;                                     /* Balloon variant */
  226.         
  227.         integer = $$CountOf(HDialogArray);            /* Count of HDialogArray items    */
  228.         
  229.         switch {            /* Special Messages for missing array items */
  230.                 case HMStringItem:
  231. hdlgMissStringBeg:        integer = (hdlgMissStringEnd - hdlgMissStringBeg) / 8;
  232.                         key int = HMStringItemID;
  233.                         point;                            /* tip            */
  234.                         rect;                            /* hotRect        */
  235.                         pstring;            /* use for missing HDialogArray items  */
  236.                         pstring;            /* use for missing HDialogArray items  */
  237.                         pstring;            /* use for missing HDialogArray items  */
  238.                         pstring;            /* use for missing HDialogArray items  */
  239.                         align word;            /* always word align the code for the pstring */
  240. hdlgMissStringEnd:                        
  241.                 case HMPictItem:
  242. hdlgMissPictBeg:        integer = (hdlgMissPictEnd - hdlgMissPictBeg) / 8;
  243.                         key int = HMPictItemID;
  244.                         point;                            /* tip            */
  245.                         rect;                            /* hotRect        */
  246.                         integer;            /* use for missing HDialogArray items  */
  247.                         integer;            /* use for missing HDialogArray items  */
  248.                         integer;            /* use for missing HDialogArray items  */
  249.                         integer;            /* use for missing HDialogArray items  */
  250. hdlgMissPictEnd:
  251.                 case HMStringResItem:
  252. hdlgMissStringResBeg:    integer = (hdlgMissStringResEnd - hdlgMissStringResBeg) / 8;
  253.                         key int = HMStringResItemID;
  254.                         point;                            /* tip            */
  255.                         rect;                            /* hotRect        */
  256.                         integer; integer;    /* Miss or 0 HDialogArray STR# res ID, index # */
  257.                         integer; integer;    /* Miss or 0 HDialogArray STR# res ID, index # */
  258.                         integer; integer;    /* Miss or 0 HDialogArray STR# res ID, index # */
  259.                         integer; integer;    /* Miss or 0 HDialogArray STR# res ID, index # */
  260. hdlgMissStringResEnd:
  261.                 case HMTEResItem:
  262. hdlgMissTEResBeg:        integer = (hdlgMissTEResEnd - hdlgMissTEResBeg) / 8;
  263.                         key int = HMTEResItemID;
  264.                         point;                            /* tip            */
  265.                         rect;                            /* hotRect        */
  266.                         integer;            /* use for missing HDialogArray items */
  267.                         integer;            /* use for missing HDialogArray items */
  268.                         integer;            /* use for missing HDialogArray items */
  269.                         integer;            /* use for missing HDialogArray items */
  270. hdlgMissTEResEnd:
  271.                 case HMSTRResItem:
  272. hdlgMissSTRResBeg:        integer = (hdlgMissSTRResEnd - hdlgMissSTRResBeg) / 8;
  273.                         key int = HMSTRResItemID;
  274.                         point;                            /* tip            */
  275.                         rect;                            /* hotRect        */
  276.                         integer;            /* use for missing HDialogArray items */
  277.                         integer;            /* use for missing HDialogArray items */
  278.                         integer;            /* use for missing HDialogArray items */
  279.                         integer;            /* use for missing HDialogArray items */
  280. hdlgMissSTRResEnd:
  281.                 case HMSkipItem:
  282. hdlgMissSkipBeg:        integer = (hdlgMissSkipEnd - hdlgMissSkipBeg) / 8;
  283.                         key int = HMSkipItemID;    /* use when there is no missing msg */
  284. hdlgMissSkipEnd:                        
  285.             };
  286.  
  287.         /* this is an array of records corresponding to dialog items in a dialog */
  288.         array HDialogArray {
  289.                 switch {
  290.                     case HMStringItem:
  291. hdlgStringBeg:            integer = (hdlgStringEnd[$$ArrayIndex(HDialogArray)] - hdlgStringBeg[$$ArrayIndex(HDialogArray)]) / 8;
  292.                         key int = HMStringItemID;        /* helpType        */
  293.                         point;                            /* tip            */
  294.                         rect;                            /* hotRect        */
  295.                         pstring;        /* Enabled dialog item message string    */
  296.                         pstring;        /* Disabled dialog item message string    */
  297.                         pstring;        /* Checked dialog item message string    */
  298.                         pstring;        /* other dialog item message string        */
  299.                         align word;        /* always word align the code */
  300. hdlgStringEnd:                        
  301.                     case HMPictItem:
  302. hdlgPictBeg:            integer = (hdlgPictEnd[$$ArrayIndex(HDialogArray)] - hdlgPictBeg[$$ArrayIndex(HDialogArray)]) / 8;
  303.                         key int = HMPictItemID;            /* helpType        */
  304.                         point;                            /* tip            */
  305.                         rect;                            /* hotRect        */
  306.                         integer;        /* Enabled dialog item message pict ID    */
  307.                         integer;        /* Disabled dialog item message pict ID    */
  308.                         integer;        /* Checked dialog item message pict ID    */
  309.                         integer;        /* other dialog item message pict ID     */    
  310. hdlgPictEnd:                        
  311.                     case HMStringResItem:
  312. hdlgStringResBeg:        integer = (hdlgStringResEnd[$$ArrayIndex(HDialogArray)] - hdlgStringResBeg[$$ArrayIndex(HDialogArray)]) / 8;
  313.                         key int = HMStringResItemID;    /* helpType        */
  314.                         point;                            /* tip            */
  315.                         rect;                            /* hotRect        */
  316.                         integer; integer;    /* Enabled STR# res ID, index #        */
  317.                         integer; integer;    /* Disabled STR# res ID, index #    */
  318.                         integer; integer;    /* Checked STR# res ID, index #        */
  319.                         integer; integer;    /* other STR# res ID, index #        */
  320. hdlgStringResEnd:                        
  321.                     case HMTEResItem:
  322. hdlgTEResBeg:            integer = (hdlgTEResEnd[$$ArrayIndex(HDialogArray)] - hdlgTEResBeg[$$ArrayIndex(HDialogArray)]) / 8;
  323.                         key int = HMTEResItemID;        /* helpType        */
  324.                         point;                            /* tip            */
  325.                         rect;                            /* hotRect        */
  326.                         integer;        /* Enabled dialog item message TERes ID */
  327.                         integer;        /* Disabled item message TERes ID        */
  328.                         integer;        /* Checked item message TERes ID        */
  329.                         integer;        /* other item message TERes ID            */    
  330. hdlgTEResEnd:                        
  331.                     case HMSTRResItem:
  332. hdlgSTRResBeg:            integer = (hdlgSTRResEnd[$$ArrayIndex(HDialogArray)] - hdlgSTRResBeg[$$ArrayIndex(HDialogArray)]) / 8;
  333.                         key int = HMSTRResItemID;        /* helpType        */
  334.                         point;                            /* tip            */
  335.                         rect;                            /* hotRect        */
  336.                         integer;        /* Enabled dialog item message STR ID    */
  337.                         integer;        /* Disabled dialog item message STR ID    */
  338.                         integer;        /* Checked dialog item message STR ID    */
  339.                         integer;        /* other dialog item message STR ID        */    
  340. hdlgSTRResEnd:                        
  341.                     case HMSkipItem:
  342. hdlgSkipBeg:            integer = (hdlgSkipEnd[$$ArrayIndex(HDialogArray)] - hdlgSkipBeg[$$ArrayIndex(HDialogArray)]) / 8;
  343.                         key int = HMSkipItemID;
  344. hdlgSkipEnd:                        
  345.                 };
  346.         };
  347. };
  348.  
  349. /*----------------------------hwin • Help Mgr Window Balloon Template--------------------------*/
  350. type 'hwin' {
  351.         integer;                                    /* Help Version */
  352.         longint;                                    /* Options                */
  353.         integer = $$CountOf(HWinArray);                /* Count                */
  354.         array HWinArray {
  355.                 integer;            /* resource ID for help template         */
  356.                 literal longint;    /* res type of template (hdlg or hrct)    */
  357.                 integer;            /* len of comparison string             */
  358.                 pstring;            /* comparison string for window title    */
  359.                 align word;
  360.         };
  361. };
  362.  
  363. /*----------------------------hrct • Help Mgr Rectangle List Template-------------------------*/
  364. type 'hrct' {
  365.         integer;                                    /* Help Version         */
  366.         longint;                                    /* Options                */
  367.         integer;                                    /* Balloon ProcID        */
  368.         integer;                                     /* Balloon Variant        */
  369.         integer = $$CountOf(HRectArray);            /* Count of hrct Msgs    */
  370.  
  371.         array HRectArray {
  372.                 switch {
  373.                     case HMStringItem:
  374. hrctStringBeg:            integer = (hrctStringEnd[$$ArrayIndex(HRectArray)] - hrctStringBeg[$$ArrayIndex(HRectArray)]) / 8;
  375.                         key int = HMStringItemID;    /* helpType            */
  376.                         point;                        /* tip                */
  377.                         rect;                        /* hotRect            */
  378.                         pstring;                    /* STR255            */
  379.                         align word;                    /* keep aligned        */
  380. hrctStringEnd:
  381.                     case HMPictItem:
  382. hrctPictBeg:            integer = (hrctPictEnd[$$ArrayIndex(HRectArray)] - hrctPictBeg[$$ArrayIndex(HRectArray)]) / 8;
  383.                         key int = HMPictItemID;        /* helpType            */
  384.                         point;                        /* tip                */
  385.                         rect;                        /* hotRect            */
  386.                         integer;                    /* Picture Res ID    */
  387. hrctPictEnd:
  388.                     case HMStringResItem:
  389. hrctStringResBeg:        integer = (hrctStringResEnd[$$ArrayIndex(HRectArray)] - hrctStringResBeg[$$ArrayIndex(HRectArray)]) / 8;
  390.                         key int = HMStringResItemID;/* helpType            */
  391.                         point;                        /* tip                */
  392.                         rect;                        /* hotRect            */
  393.                         integer; integer;            /* STR# ID, index #    */
  394. hrctStringResEnd:
  395.                     case HMTEResItem:
  396. hrctTEResBeg:            integer = (hrctTEResEnd[$$ArrayIndex(HRectArray)] - hrctTEResBeg[$$ArrayIndex(HRectArray)]) / 8;
  397.                         key int = HMTEResItemID;    /* helpType            */
  398.                         point;                        /* tip                */
  399.                         rect;                        /* hotRect            */
  400.                         integer;                    /* TextEdit res ID    */
  401. hrctTEResEnd:
  402.                     case HMSTRResItem:
  403. hrctSTRResBeg:            integer = (hrctSTRResEnd[$$ArrayIndex(HRectArray)] - hrctSTRResBeg[$$ArrayIndex(HRectArray)]) / 8;
  404.                         key int = HMSTRResItemID;    /* helpType            */
  405.                         point;                        /* tip                */
  406.                         rect;                        /* hotRect            */
  407.                         integer;                    /* STR res ID        */
  408. hrctSTRResEnd:
  409.                     case HMSkipItem:
  410. hrctSkipBeg:            integer = (hrctSkipEnd[$$ArrayIndex(HRectArray)] - hrctSkipBeg[$$ArrayIndex(HRectArray)]) / 8;
  411.                         key int = HMSkipItemID;        /* skip item (leave a hole) */
  412.                         point;                        /* tip options (keep same structure as other items)    */
  413.                         rect;                        /* skip this rect            */
  414. hrctSkipEnd:
  415.                     case HMTrackControlStringItem:
  416. hrctTCStringBeg:        integer = (hrctTCStringEnd[$$ArrayIndex(HRectArray)] - hrctTCStringBeg[$$ArrayIndex(HRectArray)]) / 8;
  417.                         key int = HMStringItemID+HMTrackCntlID;
  418.                         point;                        /* tip                */
  419.                         rect;                        /* hotRect            */
  420.                         pstring;                    /* Enabled control message string        */
  421.                         pstring;                    /* Disabled control message string        */
  422.                         pstring;                    /* Checked control message string        */
  423.                         pstring;                    /* other control message string            */
  424.                         align word;                    /* keep aligned        */
  425. hrctTCStringEnd:                        
  426.                     case HMTrackControlPictItem:
  427. hrctTCPictBeg:            integer = (hrctTCPictEnd[$$ArrayIndex(HRectArray)] - hrctTCPictBeg[$$ArrayIndex(HRectArray)]) / 8;
  428.                         key int = HMPictItemID+HMTrackCntlID;
  429.                         point;                        /* tip                */
  430.                         rect;                        /* hotRect            */
  431.                         integer;                    /* Enabled control message pict ID        */
  432.                         integer;                    /* Disabled control message pict ID        */
  433.                         integer;                    /* Checked control message pict ID        */
  434.                         integer;                    /* other control message pict ID         */    
  435. hrctTCPictEnd:                        
  436.                     case HMTrackControlStringResItem:
  437. hrctTCStringResBeg:        integer = (hrctTCStringResEnd[$$ArrayIndex(HRectArray)] - hrctTCStringResBeg[$$ArrayIndex(HRectArray)]) / 8;
  438.                         key int = HMStringResItemID+HMTrackCntlID;
  439.                         point;                        /* tip                */
  440.                         rect;                        /* hotRect            */
  441.                         integer; integer;            /* Enabled STR# res ID, index #        */
  442.                         integer; integer;            /* Disabled STR# res ID, index #    */
  443.                         integer; integer;            /* Checked STR# res ID, index #        */
  444.                         integer; integer;            /* other STR# res ID, index #        */
  445. hrctTCStringResEnd:                        
  446.                     case HMTrackControlTEResItem:
  447. hrctTCTEResBeg:            integer = (hrctTCTEResEnd[$$ArrayIndex(HRectArray)] - hrctTCTEResBeg[$$ArrayIndex(HRectArray)]) / 8;
  448.                         key int = HMTEResItemID+HMTrackCntlID;
  449.                         point;                        /* tip                */
  450.                         rect;                        /* hotRect            */
  451.                         integer;                    /* Enabled TextEdit hdl spec ID        */
  452.                         integer;                    /* Disabled TextEdit hdl spec ID    */
  453.                         integer;                    /* Checked TextEdit hdl spec ID        */
  454.                         integer;                    /* other TextEdit hdl spec ID        */
  455. hrctTCTEResEnd:                        
  456.                     case HMTrackControlSTRResItem:
  457. hrctTCSTRResBeg:        integer = (hrctTCSTRResEnd[$$ArrayIndex(HRectArray)] - hrctTCSTRResBeg[$$ArrayIndex(HRectArray)]) / 8;
  458.                         key int = HMSTRResItemID+HMTrackCntlID;
  459.                         point;                        /* tip                */
  460.                         rect;                        /* hotRect            */
  461.                         integer;                    /* Enabled control message STR ID        */
  462.                         integer;                    /* Disabled control message STR ID        */
  463.                         integer;                    /* Checked control message STR ID        */
  464.                         integer;                    /* other control message STR ID            */    
  465. hrctTCSTRResEnd:                        
  466.                 };
  467.         };
  468. };
  469.  
  470.  
  471.  
  472. /*----------------------------hovr • Help Mgr Override Resource Template-------------------------*/
  473.  
  474. type 'hovr' {
  475.         integer;                                    /* Help Version */
  476.         longint;                                    /* Options */
  477.         integer;                                    /* Balloon ProcID */
  478.         integer;                                     /* Balloon variant */
  479.         integer = $$CountOf(HOverrideArray);        /* Count of array items (below) */
  480.  
  481.         switch {            /* Special Message for missing array items */
  482.                 case HMStringItem:
  483. hovrMissStringBeg:        integer = (hovrMissStringEnd - hovrMissStringBeg) / 8;
  484.                         key int = HMStringItemID;
  485.                         pstring;                /* missing HOverrideArray item  */
  486.                         align word;                /* always word align the code for the pstring */
  487. hovrMissStringEnd:                        
  488.                 case HMPictItem:
  489. hovrMissPictBeg:        integer = (hovrMissPictEnd - hovrMissPictBeg) / 8;
  490.                         key int = HMPictItemID;
  491.                         integer;                /* missing HOverrideArray item  */
  492. hovrMissPictEnd:
  493.                 case HMStringResItem:
  494. hovrMissStringResBeg:    integer = (hovrMissStringResEnd - hovrMissStringResBeg) / 8;
  495.                         key int = HMStringResItemID;
  496.                         integer; integer;        /* Miss or 0 HOverrideArray STR# res ID, index # */
  497. hovrMissStringResEnd:
  498.                 case HMTEResItem:
  499. hovrMissTEResBeg:        integer = (hovrMissTEResEnd - hovrMissTEResBeg) / 8;
  500.                         key int = HMTEResItemID;
  501.                         integer;                /* use for missing HOverrideArray items */
  502. hovrMissTEResEnd:
  503.                 case HMSTRResItem:
  504. hovrMissSTRResBeg:        integer = (hovrMissSTRResEnd - hovrMissSTRResBeg) / 8;
  505.                         key int = HMSTRResItemID;
  506.                         integer;                /* use for missing HOverrideArray items */
  507. hovrMissSTRResEnd:
  508.                 case HMSkipItem:
  509. hovrMissSkipBeg:        integer = (hovrMissSkipEnd - hovrMissSkipBeg) / 8;
  510.                         key int = HMSkipItemID;    /* use when there is no missing msg */
  511. hovrMissSkipEnd:                        
  512.             };
  513.             
  514.         array HOverrideArray {
  515.                 switch {
  516.                     case HMStringItem:
  517. hovrStringBeg:            integer = (hovrStringEnd[$$ArrayIndex(HOverrideArray)] - hovrStringBeg[$$ArrayIndex(HOverrideArray)]) / 8;
  518.                         key int = HMStringItemID;
  519.                         pstring;            /* message string  */
  520.                         align word;
  521. hovrStringEnd:                        
  522.                     case HMPictItem:
  523. hovrPictBeg:            integer = (hovrPictEnd[$$ArrayIndex(HOverrideArray)] - hovrPictBeg[$$ArrayIndex(HOverrideArray)]) / 8;
  524.                         key int = HMPictItemID;
  525.                         integer;            /* message pict ID  */
  526. hovrPictEnd:                                                
  527.                     case HMStringResItem:
  528. hovrStringResBeg:        integer = (hovrStringResEnd[$$ArrayIndex(HOverrideArray)] - hovrStringResBeg[$$ArrayIndex(HOverrideArray)]) / 8;
  529.                         key int = HMStringResItemID;
  530.                         integer; integer;    /* STR# res ID, index # */
  531. hovrStringResEnd:                        
  532.                     case HMTEResItem:
  533. hovrTEResBeg:            integer = (hovrTEResEnd[$$ArrayIndex(HOverrideArray)] - hovrTEResBeg[$$ArrayIndex(HOverrideArray)]) / 8;
  534.                         key int = HMTEResItemID;
  535.                         integer;            /* message TERes ID */
  536. hovrTEResEnd:                        
  537.                     case HMSTRResItem:
  538. hovrSTRResBeg:            integer = (hovrSTRResEnd[$$ArrayIndex(HOverrideArray)] - hovrSTRResBeg[$$ArrayIndex(HOverrideArray)]) / 8;
  539.                         key int = HMSTRResItemID;
  540.                         integer;            /* message STR ID */
  541. hovrSTRResEnd:                        
  542.                     case HMSkipItem:
  543. hovrSkipBeg:            integer = (hovrSkipEnd[$$ArrayIndex(HOverrideArray)] - hovrSkipBeg[$$ArrayIndex(HOverrideArray)]) / 8;
  544.                         key int = HMSkipItemID;
  545. hovrSkipEnd:                        
  546.                 };
  547.         };
  548. };
  549.  
  550.  
  551. /*----------------------------hfdr • Help Mgr Finder Application Balloon Template-------------------------*/
  552. type 'hfdr' {
  553.         integer;                                    /* Help Version         */
  554.         longint;                                    /* Options                */
  555.         integer;                                    /* Balloon ProcID        */
  556.         integer;                                     /* Balloon Variant        */
  557.         integer = $$CountOf(HFdrArray);                /* Count of hfdr Msgs    */
  558.  
  559.         array HFdrArray {
  560.                 switch {
  561.                     case HMStringItem:
  562. hfdrStringBeg:            integer = (hfdrStringEnd[$$ArrayIndex(HFdrArray)] - hfdrStringBeg[$$ArrayIndex(HFdrArray)]) / 8;
  563.                         key int = HMStringItemID;    /* helpType            */
  564.                         pstring;                    /* STR255            */
  565.                         align word;                    /* keep aligned        */
  566. hfdrStringEnd:
  567.                     case HMPictItem:
  568. hfdrPictBeg:            integer = (hfdrPictEnd[$$ArrayIndex(HFdrArray)] - hfdrPictBeg[$$ArrayIndex(HFdrArray)]) / 8;
  569.                         key int = HMPictItemID;        /* helpType            */
  570.                         integer;                    /* Picture Res ID    */
  571. hfdrPictEnd:
  572.                     case HMStringResItem:
  573. hfdrStringResBeg:        integer = (hfdrStringResEnd[$$ArrayIndex(HFdrArray)] - hfdrStringResBeg[$$ArrayIndex(HFdrArray)]) / 8;
  574.                         key int = HMStringResItemID;/* helpType            */
  575.                         integer; integer;            /* STR# ID, index #    */
  576. hfdrStringResEnd:
  577.                     case HMTEResItem:
  578. hfdrTEResBeg:            integer = (hfdrTEResEnd[$$ArrayIndex(HFdrArray)] - hfdrTEResBeg[$$ArrayIndex(HFdrArray)]) / 8;
  579.                         key int = HMTEResItemID;    /* helpType            */
  580.                         integer;                    /* TextEdit res ID    */
  581. hfdrTEResEnd:
  582.                     case HMSTRResItem:
  583. hfdrSTRResBeg:            integer = (hfdrSTRResEnd[$$ArrayIndex(HFdrArray)] - hfdrSTRResBeg[$$ArrayIndex(HFdrArray)]) / 8;
  584.                         key int = HMSTRResItemID;    /* helpType            */
  585.                         integer;                    /* STR res ID        */
  586. hfdrSTRResEnd:
  587.                     case HMSkipItem:
  588. hfdrSkipBeg:            integer = (hfdrSkipEnd[$$ArrayIndex(HFdrArray)] - hfdrSkipBeg[$$ArrayIndex(HFdrArray)]) / 8;
  589.                         key int = HMSkipItemID;        /* skip item (leave a hole) */
  590. hfdrSkipEnd:
  591.                 };
  592.         };
  593. };
  594.  
  595.  
  596. #endif /* __BALLOONS_R__ */
  597.  
  598.